import axios from 'axios';

// 扩展 window 对象
declare global {
  interface Window {
    // electronAPI 是唯一暴露的接口
    electronAPI: {
      runTask: <T>(task: string, ...args: unknown[]) => Promise<T>;
    };
  }
}

/**
 * 创建一个 Axios 实例，用于与后端 API 进行通信。
 * 实例已预先配置了基础 URL，指向后端服务地址。
 */
const api = axios.create({
  // @ts-expect-error Vite defines this global constant.
  baseURL: __API_URL__,
  timeout: 10000, // 设置请求超时时间为 10 秒
});

// 请求拦截器
api.interceptors.request.use(
  async (config) => {
    // 在发送请求之前做些什么，例如添加 token
    const token = await window.electronAPI.runTask('store:get', 'token');
    if (token) {
      config.headers.token = token;
    }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 响应拦截器 (可选，暂时只做透传)
api.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    return response;
  },
  (error) => {
    // 对响应错误做点什么
    // 比如，处理 401 未授权错误，跳转到登录页
    return Promise.reject(error);
  }
);

export default api; 